Mukund Sundararajan , Ankur Taly , Qiqi Yan
We study the problem of attributing the prediction of a deep network to its input features, a problem previously studied by several other works. We identify two fundamental axioms---Sensitivity and Implementation Invariance that attribution methods ought to satisfy. We show that they are not satisfied by most known attribution methods, which we consider to be a fundamental weakness of those methods. We use the axioms to guide the design of a new attribution method called Integrated Gradients. Our method requires no modification to the original network and is extremely simple to implement; it just needs a few calls to the standard gradient operator. We apply this method to a couple of image models, a couple of text models and a chemistry model, demonstrating its ability to debug networks, to extract rules from a network, and to enable users to engage with models better.
本文介绍了一种神经网络的可视化方法:积分梯度(Integrated Gradients)
,是一篇 2016-2017 年间的工作。
所谓可视化,简单来说就是对于给定的输入 x x x 以及模型 F ( x ) F(x) F ( x ) ,想办法指出 x x x 的哪些分量对模型的预测有较大的影响,或者说 x x x 各个分量的重要性做个排序,而专业的话术就是归因
(Attribution)。一个朴素的思路是直接使用梯度 ∇ x F ( x ) \nabla _{x}F(x) ∇ x F ( x ) 来作为 x x x 各个分量的重要性指标,而积分梯度是对它的改进。
朴素梯度 考虑一个图片分类系统,将输入图 x x x 分为C C C 个类别中的一个,对于每个类c ∈ C c\in C c ∈ C ,都有一个函数S c ( x ) S_c(x) S c ( x ) 将输入x x x 映射到类别空间的得分,分类结果则取决于哪个映射值最大,即
c l a s s ( x ) = arg max c ∈ C S c ( x ) class(x)=\argmax_{c\in C} S_c(x) c l a ss ( x ) = c ∈ C arg max S c ( x ) 如果S c ( x ) S_c(x) S c ( x ) 本事就是可导的,一个简单的方法就是直接对S c ( x ) S_c(x) S c ( x ) 求导,即
M c ( x ) = ∇ x S c ( x ) M_c(x)=\nabla_x S_c(x) M c ( x ) = ∇ x S c ( x ) 这里的M c ( x ) M_c(x) M c ( x ) 表示x x x 上的每个像素上的微笑扰动对类别c c c 得分的影响。
这种方法在实际操作中确实能显示出与分类结果相关的区域,但求得的 saliency maps 通常在视觉上有很多的噪点(对这些噪点作用目前还不清楚,有可能这些噪点看似随机,实际上对网络的运作有很大的影响,也有可能这些噪点本身就不重要),但正是因为这些噪点的存在,导致只能大致确定相关区域的位置,而不能给出符合人类理解的结果,如下图:
产生噪点的可能原因在于S c S_c S c 函数的导数在小范围内有很大的波动,毕竟没有任何理由要求该函数是平滑的,而且网络通常采用R e L U ReLU R e LU 作为非线性激活函
数,所以S x S_x S x 甚至不是连续可导的。
下面给一特定图片加一微小的扰动,观察其中一个像素的偏导数的变化情况:
从数学层面推导,它就是基于泰勒展开
F ( x + Δ x ) − F ( x ) ≈ ⟨ ∇ x F ( x ) , Δ x ⟩ = ∑ i [ ∇ x F ( x ) ] i Δ x i \begin{align} F(x+\Delta x)-F(x)&\approx \left \langle \nabla_xF(x),\Delta x \right \rangle =\sum_i[\nabla_xF(x)]_i\Delta x_i \end{align} F ( x + Δ x ) − F ( x ) ≈ ⟨ ∇ x F ( x ) , Δ x ⟩ = i ∑ [ ∇ x F ( x ) ] i Δ x i 其中Δ x i \Delta x_i Δ x i 是一个微小的扰动,Δ x i = ϵ i \Delta x_i=\epsilon_i Δ x i = ϵ i ,ϵ i \epsilon_i ϵ i 是一个微小的随机噪声。
∇ x F ( x ) \nabla_xF(x) ∇ x F ( x ) 是大小跟x x x 一样的向量,这里[ ∇ x F ( x ) ] i [\nabla_xF(x)]_i [ ∇ x F ( x ) ] i 为它的第i i i 个分量,那么对于同样大小的Δ x i \Delta x_i Δ x i ,[ ∇ x F ( x ) ] i [\nabla_xF(x)]_i [ ∇ x F ( x ) ] i 的绝对值越大,那么F ( x + Δ x i ) F(x+\Delta x_i) F ( x + Δ x i ) 相对F ( x ) F(x) F ( x ) 的影响越大。也就是说:
[ ∇ x F ( x ) ] i [\nabla_xF(x)]_i [ ∇ x F ( x ) ] i 衡量了模型对输入的第i i i 个分量的敏感程度,所以用∣ [ ∇ x F ( x ) ] i ∣ |[\nabla_xF(x)]_i| ∣ [ ∇ x F ( x ) ] i ∣ 作为第i i i 个分量的重要性指标。
这种思路比较简单,很多时候它确实可以成功解释一些模型,但是它也有明显的缺点。一旦进入到了饱和区(典型的就是 ReLU 的负半轴),梯度就为 0 了,那就揭示不出什么有效信息了。
按照论文中的描述就是说违反了S e n s i t i v i t y Sensitivity S e n s i t i v i t y 公理。
公理: S e n s i t i v i t y Sensitivity S e n s i t i v i t y
定义:如果对于所有仅在一个特征上具有不同取值的输入 (i n p u t input in p u t ) 和基线 ( b a s e l i n e ) (baseline) ( ba se l in e ) ,并且模型为两者给出了不同的预测。那么,那个不同取值的特征应该被赋予一个非 0 归因。若一个归因方法满足上面的要求,则称该归因方法满足 S e n s i t i v i t y Sensitivity S e n s i t i v i t y 。
举个例子,一个单变量R e L U ReLU R e LU 网络
f ( x ) = 1 − R e L U ( 1 − x ) = { x , x < 1 1 , x ≥ 1 f(x)=1-ReLU(1-x)=\left\{\begin{matrix} x,x<1\\ 1,x\geq 1 \end{matrix}\right. f ( x ) = 1 − R e LU ( 1 − x ) = { x , x < 1 1 , x ≥ 1 假设基线( b a s e l i n e ) (baseline) ( ba se l in e ) 为x = 0 x=0 x = 0 并且输入x = 2 x=2 x = 2 ,那么显然f ( 0 ) = 0 , f ( 2 ) = 1 f(0)=0,f(2)=1 f ( 0 ) = 0 , f ( 2 ) = 1 。下面检测是否满S e n s i t i v i t y Sensitivity S e n s i t i v i t y 公理:
首先,输入x = 2 x=2 x = 2 和基线x = 0 x=0 x = 0 不同;其次,输入f ( x = 2 ) = 1 f(x=2)=1 f ( x = 2 ) = 1 与基线f ( x = 0 ) = 0 f(x=0)=0 f ( x = 0 ) = 0 也不同;不违法S e n s i t i v i t y Sensitivity S e n s i t i v i t y 公理的归因方法应该为输入x x x 归因一个非 0 值,但是梯度在x = 2 x=2 x = 2 时为 0,所以不满足S e n s i t i v i t y Sensitivity S e n s i t i v i t y 公理。
积分梯度 参照背景 首先,我们需要换个角度来理解原始问题:我们的目的是找出比较重要的分量,但是这个重要性不应该是绝对的,而应该是相对的。比如,我们要找出近来比较热门的流行词,我们就不能单根据词频来找,不然找出来肯定是“的”、“了”之类的停用词,我们应当准备一个平衡语料统计出来的“参照”词频表,然后对比词频差异而不是绝对值。这就告诉我们,为了衡量 x x x 各个分量的重要性,我们也需要有一个“参照背景”x ˉ \bar{x} x ˉ 。
很多场景下可以简单地让x ˉ = 0 \bar{x}=0 x ˉ = 0 ,但这未必是最优的,比如还可以选择x ˉ \bar{x} x ˉ 为所有训练样本的均值。我们期望 F ( x ˉ ) F(\bar{x}) F ( x ˉ ) 应当给一个比较平凡的预测结果,比如分类模型的话,x ˉ \bar{x} x ˉ 的预测结果应该是每个类的概率都很均衡。于是我们去考虑 F ( x ˉ ) − F ( x ) F(\bar{x})−F(x) F ( x ˉ ) − F ( x ) ,我们可以想象为这是从 x x x 移动到 x ˉ \bar{x} x ˉ 的成本。
如果还是用近似展开,那么我们可以得到
F ( x ˉ ) − F ( x ) ≈ ∑ i [ ∇ x F ( x ) ] i [ x ˉ − x ] i \begin{align} F(\bar{x})-F(x)\approx\sum_i[\nabla_x F(x)]_i[\bar{x}-x]_i \end{align} F ( x ˉ ) − F ( x ) ≈ i ∑ [ ∇ x F ( x ) ] i [ x ˉ − x ] i 对于上式,我们就可以有一种新的理解
从 x x x 移动到 x ˉ \bar{x} x ˉ 的总成本为F ( x ˉ ) − F ( x ) F(\bar{x})-F(x) F ( x ˉ ) − F ( x ) ,它是每个分量的成本之和,而每个分量的成本近似为[ ∇ x F ( x ) ] i [ x ˉ − x ] [\nabla_x F(x)]_i[\bar{x}-x] [ ∇ x F ( x ) ] i [ x ˉ − x ] ,所以我们可以用∣ [ ∇ x F ( x ) ] i [ x ˉ − x ] i ∣ |[\nabla_xF(x)]_i[\bar{x}-x]_i| ∣ [ ∇ x F ( x ) ] i [ x ˉ − x ] i ∣ 作为每个i i i 分量的重要性指标。
当然,不管是[ ∇ x F ( x ) ] i [\nabla_xF(x)]_i [ ∇ x F ( x ) ] i 还是∣ [ ∇ x F ( x ) ] i [ x ˉ − x ] i ∣ |[\nabla_xF(x)]_i[\bar{x}-x]_i| ∣ [ ∇ x F ( x ) ] i [ x ˉ − x ] i ∣ ,它们的缺陷在数学上都是一样的(梯度消失),但是对应的解释缺并不一样。
积分恒等 前面∣ [ ∇ x F ( x ) ] i [ x ˉ − x ] i ∣ |[\nabla_xF(x)]_i[\bar{x}-x]_i| ∣ [ ∇ x F ( x ) ] i [ x ˉ − x ] i ∣ 不够好是因为公式( 2 ) (2) ( 2 ) 不够精确,那如果能找到一个精度相等的类似表达式,那么就可以解决这个问题了。积分梯度正是找到了这样的一个表达式:
设γ ( a ) , a ∈ [ 0 , 1 ] \gamma(a),a\in[0,1] γ ( a ) , a ∈ [ 0 , 1 ] 代表连接x x x 和x ˉ \bar{x} x ˉ 的一条参数曲线,其中γ ( 0 ) = x , γ ( 1 ) = x ˉ \gamma(0)=x,\gamma(1)=\bar{x} γ ( 0 ) = x , γ ( 1 ) = x ˉ ,那么我们就有
F ( x ˉ ) − F ( x ) = F ( γ ( 1 ) ) − F ( γ ( 0 ) ) = ∫ 0 1 d F ( γ ( α ) ) d α d α = ∫ 0 1 ⟨ ∇ γ F ( γ ( α ) ) , γ ′ ( α ) ⟩ d α = ∑ i ∫ 0 1 [ ∇ γ F ( γ ( α ) ) ] i [ γ ′ ( α ) ] i d α \begin{aligned} F(\bar{x})-F(x) &=F(\gamma(1))-F(\gamma(0)) \\ &=\int_{0}^{1} \frac{d F(\gamma(\alpha))}{d \alpha} d \alpha \\ &=\int_{0}^{1}\left\langle\nabla_{\gamma} F(\gamma(\alpha)), \gamma^{\prime}(\alpha)\right\rangle d \alpha \\ &=\sum_{i} \int_{0}^{1}\left[\nabla_{\gamma} F(\gamma(\alpha))\right]_{i}\left[\gamma^{\prime}(\alpha)\right]_{i} d \alpha \end{aligned} F ( x ˉ ) − F ( x ) = F ( γ ( 1 )) − F ( γ ( 0 )) = ∫ 0 1 d α d F ( γ ( α )) d α = ∫ 0 1 ⟨ ∇ γ F ( γ ( α )) , γ ′ ( α ) ⟩ d α = i ∑ ∫ 0 1 [ ∇ γ F ( γ ( α )) ] i [ γ ′ ( α ) ] i d α 可以看到,式子(3)具有跟式(2)相同的形式,只不过将[ ∇ x F ( x ) ] i [ x ˉ − x ] i [\nabla_xF(x)]_i[\bar{x}-x]_i [ ∇ x F ( x ) ] i [ x ˉ − x ] i 换成了∫ 0 1 [ ∇ γ F ( γ ( α ) ) ] i [ γ ′ ( α ) ] i d α \int_{0}^{1}\left[\nabla_{\gamma} F(\gamma(\alpha))\right]_{i}\left[\gamma^{\prime}(\alpha)\right]_{i} d \alpha ∫ 0 1 [ ∇ γ F ( γ ( α )) ] i [ γ ′ ( α ) ] i d α ,但式子(3)的是精确的积分恒等式,所以积分梯度就提出使用
∣ ∫ 0 1 [ ∇ γ F ( γ ( α ) ) ] i [ γ ′ ( α ) ] i d α ∣ \begin{align} \left|\int_{0}^{1}\left[\nabla_{\gamma} F(\gamma(\alpha))\right]_{i}\left[\gamma^{\prime}(\alpha)\right]_{i} d \alpha\right| \end{align} ∣ ∣ ∫ 0 1 [ ∇ γ F ( γ ( α )) ] i [ γ ′ ( α ) ] i d α ∣ ∣ 作为第i i i 个分量的重要性度量。但是这两点间有无数路径,如图
作为最简单的方案,就是将γ ( a ) \gamma(a) γ ( a ) 取为两点之间的直线,即
γ ( a ) = ( 1 − a ) x + a x ˉ \gamma(a)=(1-a)x+a\bar{x} γ ( a ) = ( 1 − a ) x + a x ˉ 这时候积分梯度具体化为
∣ [ ∫ 0 1 ∇ γ F ( γ ( α ) ) ∣ γ ( α ) = ( 1 − α ) x + α x ˉ d α ] i [ x ˉ − x ] i ∣ \left|\left[\left.\int_{0}^{1} \nabla_{\gamma} F(\gamma(\alpha))\right|_{\gamma(\alpha)=(1-\alpha) x+\alpha \bar{x}} d \alpha\right]_{i}[\bar{x}-x]_{i}\right| ∣ ∣ [ ∫ 0 1 ∇ γ F ( γ ( α )) ∣ ∣ γ ( α ) = ( 1 − α ) x + α x ˉ d α ] i [ x ˉ − x ] i ∣ ∣ 所以相比于∣ [ ∇ x F ( x ) ] i [ x ˉ − x ] i ∣ |[\nabla_xF(x)]_i[\bar{x}-x]_i| ∣ [ ∇ x F ( x ) ] i [ x ˉ − x ] i ∣ ,用梯度的积分∫ 0 1 [ ∇ γ F ( γ ( α ) ) ] i [ γ ′ ( α ) ] i d α \int_{0}^{1}\left[\nabla_{\gamma} F(\gamma(\alpha))\right]_{i}\left[\gamma^{\prime}(\alpha)\right]_{i} d \alpha ∫ 0 1 [ ∇ γ F ( γ ( α )) ] i [ γ ′ ( α ) ] i d α 替换∇ x F ( x ) \nabla_xF(x) ∇ x F ( x ) ,也就是从x x x 到x ˉ \bar{x} x ˉ 的直线上每一点的梯度的平均结果。直观上来看,由于考虑了整条路径上的所有点的梯度,因此就不再某一点的梯度为 0 的限制了。
离散近似 最后这个积分着实有点恐怖。积分梯度可以通过求和来高效地做近似计算,只需要将基线x ˉ \bar{x} x ˉ 至x x x 直线上足够间隔点的梯度相近即可。
∣ [ 1 n ∑ k = 1 n ( ∇ γ F ( γ ( α ) ) ∣ γ ( α ) = ( 1 − α ) x + α x ˉ , α = k / n ) ] i [ x ˉ − x ] i ∣ \left|\left[\frac{1}{n} \sum_{k=1}^{n}\left(\left.\nabla_{\gamma} F(\gamma(\alpha))\right|_{\gamma(\alpha)=(1-\alpha) x+\alpha \bar{x}, \alpha=k / n}\right)\right]_{i}[\bar{x}-x]_{i}\right| ∣ ∣ [ n 1 k = 1 ∑ n ( ∇ γ F ( γ ( α )) ∣ γ ( α ) = ( 1 − α ) x + α x ˉ , α = k / n ) ] i [ x ˉ − x ] i ∣ ∣ 实验效果 在分类问题中的效果
在自然语言中的效果
integrated_gradients
Saliency Maps Picture